package com.jdk.learn.jvm;

/**
 * 对象结构：
 *         1.对象头(Header)
 *              - 自身运行时数据(Mark Word 32位或者64)
 *                  - hash值
 *                  - GC分代年龄
 *                  - 锁状态
 *                  - 线程持有的锁
 *                  - 偏向线程ID、偏向时间戳
 *              - 类型指针
 *                  -
 *         2.InstanceData(实例数据)
 *              - 相同宽度数据默认存放在一起
 *              - 数据也可以继承自父类
 *         3.Padding(填充)
 *              - 8位内存填充 用来对齐
 *
 *   对象的访问定位技术：
 *      - 使用句柄(多一个句柄池)
 *          优点：在对象地址发生变化时，不需要更改引用
 *          缺点：需要访问二次才能定位到地址
 *      - 直接指针（HotSpot）
 *          优点：直接取对象地址
 *          缺点：对象地址发生变化时，需要修改引用地址
 *
 */
public class _004ObjectStructure {
    private  String name;

    public _004ObjectStructure(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "_004ObjectStructure{" +
                "name='" + name + '\'' +
                '}';
    }
}
